perm filename ROMITP.MF[TEX,SYS]1 blob sn#546420 filedate 1980-12-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00019 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	% This file contains punctuation marks common to roman and
C00004 00003	"Exclamation point"
C00005 00004	"Apostrophe"
C00006 00005	"Left parenthesis"
C00007 00006	"Right parenthesis"
C00008 00007	"Asterisk"
C00010 00008	"Plus sign"
C00011 00009	"Comma"
C00012 00010	"Period"
C00013 00011	"Virgule (slash)"
C00014 00012	"Colon"
C00015 00013	"Semicolon"
C00016 00014	"Less than sign"
C00017 00015	"Equal sign"
C00018 00016	"Greater than sign"
C00019 00017	"Left bracket"
C00020 00018	"Right bracket"
C00021 00019	"Reverse apostrophe"
C00023 ENDMK
C⊗;
% This file contains punctuation marks common to roman and
% italic styles, including math italic and fixed-width fonts.
% Codes \¬041, \¬047--\¬054, \¬056, \¬057, \¬072--\¬076, \¬133, \¬135, \¬140 are used.
"Exclamation point";
call charbegin('041,5,0,0,ph,0,ph.slant+.5pwiii-2pu);
new w99;
if w3<1.1w0: w99=round 1.1w0;
else:	w99=w3;
fi;
cpen; x1=x2=x3=good99 2.5u; bot99y1=0; w99 draw 1;	% dot
top99y3=h+o; bot6y2=.25[top99y1+1,m];
w99 draw 3;	% top of stem
hpen; draw |w99|3..|w0|2.	% stem
"Apostrophe";
call charbegin('047,5,0,0,ph,0,2/3[px,ph].slant+.5pw-pu);
% There is rotational symmetry with respect to reverse apostrophe.
new v; v=fixwidth[u,5/9u];	% unit width adjusted to agree with closing quotes
cpen; top3y1=top6y2=h; top6y4=m; y3=2/3[y4,y2];
x1=x2=good3 .5r; x3=good0(x1+v+eps); x4=x1-.5v-eps;
w3 draw 1;	% bulb
hpen; w0 draw 2{1,0}..3{0,-1}..4{3(x4-x3),y4-y3}.	% tail
"Left parenthesis";
call charbegin('050,6,0,0,ph+pb,ph+pb-2pa,(ph+pb).slant+.5pw-.5pu);
% There is left-right symmetry with respect to right parenthesis.
hpen; x1=x3=good0(r-u);
top0y1=h+b; y2=a=.5[y1,y3]; y0=y1; y4=y3;
new v;	% unit width corrected for fixed width option
if fixwidth=0: v=u;
else: v=6/9 u;
fi;
new w99; w99=round .75[w0,w1]; lft99x2=round(x1-4v);
x0=x4=x1+7.5v;
draw (0..)|w0|1..|w99#|2..|w0|3(..4).	% stroke
"Right parenthesis";
call charbegin('051,6,0,0,ph+pb,ph+pb-2pa,pa.slant-.5pu);
% There is left-right symmetry with respect to left parenthesis.
hpen; x1=x3=good0 u;
top0y1=h+b; y2=a=.5[y1,y3]; y0=y1; y4=y3;
new v;	% unit width corrected for fixed width option
if fixwidth=0: v=u;
else: v=6/9 u;
fi;
new w99; w99=round .75[w0,w1]; rt99x2=round(x1+4v);
x0=x4=x1-7.5v;
draw (0..)|w0|1..|w99#|2..|w0|3(..4).	% stroke
"Asterisk";
call charbegin('052,9,0,0,lowast[ph+pb,pa+.5px],0,
				(lowast[ph+pb,pa+.5px]-.25px).slant-(4-1.875sqrt3)pu);
new w99; w99=round(.6pixels.pw+blacker);	% thinner than hairline
new w98; w98=round .7[w99,w1];
cpen; top1y1=lowast[h+b,round(a+.5m)]; top1y1-bot1y2=m;
y0=.5[y1,y2]; x0=r-x0; x1=x2=x0;
x3=r-x4; x5=r-x6; x3=x5;	% left-right symmetry
y3=y4; y5=y6; y3-y5=y1-y0; .5[y3,y5]=y0;
x4-x0=(.5sqrt3)lft1 3.75u;	% asterisk will have 60-degree angles if $m=7.5u$
call `a cdraw(1,0,98,99);	% upper arm
call `b cdraw(2,0,98,99);	% lower arm
call `c cdraw(3,0,98,99);	% upper left arm
call `d cdraw(4,0,98,99);	% upper right arm
call `e cdraw(5,0,98,99);	% lower left arm
call `f cdraw(6,0,98,99).	% lower right arm
"Plus sign";
cpen;
if fixwidth=0: if pa+8pu>ph:
		call charbegin('053,18,0,0,ph,ph-2pa,pa.slant-.5pu); top10y1=h;
	else: call charbegin('053,18,0,0,pa+8pu,8pu-pa,pa.slant-.5pu);
		top10y1=a+8u;
	fi;
else: call charbegin('053,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u;
fi;
.5[y1,y2]=a; x1=x2=.5r;
lft10x3=round u; x4=r-x3; y3=y4=a;
w10 draw 1..2;	% stem
draw 3..4.	% bar
"Comma";
call charbegin('054,5,0,0,1.1pwiii,pdd,0);
cpen; new w99; w99=round 1.1w3;
x1=good99 .5r; bot99y1=0; w99 draw 1;	% bulb
y2=y1; rt99x1=rt0x2;
if fixwidth=0: x3=good0 1.5u;
else: x3=good0 35/18 u;
fi;
hpen; bot0y3=-dd;
w0 draw 2{0,-1}..3{3(x3-x2),y3-y2}.	% point
"Period";
call charbegin('056,5,0,0,1.1pwiii,0,0);
cpen; new w99; w99=round 1.1w3;
x1=good99 .5r; bot99y1=0; w99 draw 1.	% dot
"Virgule (slash)";
call charbegin('057,9,0,0,ph+pb,ph+pb-2pa,(ph+pb).slant-.5pu);
cpen; lft10x1=round u; x2=r-x1;
top10y2=h+b; .5[y1,y2]=a;
w10 draw 1..2.	% diagonal
"Colon";
call charbegin('072,5,0,0,px,0,px.slant+.55pwiii-2pu);
cpen; new w99; w99=round 1.1w3;
x1=good99 .5r; bot99y1=0; w99 draw 1;	% upper dot
x3=x1; top99y3=m; w99 draw 3.	% lower dot
"Semicolon";
call charbegin('073,5,0,0,px,pdd,px.slant+.55pwiii-2pu);
cpen; new w99; w99=round 1.1w3;
x1=good99 .5r; bot99y1=0; w99 draw 1;	% bulb
x5=x1; top99y5=m; w99 draw 5;	% dot
y2=y1; rt99x1=rt0x2;
if fixwidth=0: x3=good0 1.5u;
else: x3=good0 35/18 u;
fi;
hpen; bot0y3=-dd;
w0 draw 2{0,-1}..3{3(x3-x2),y3-y2}.	% point
"Less than sign";
call charbegin('074,18,0,0,.5[px,ph]+prt/2,
				.5[px,ph]+prt/2-2pa,.5[px,ph].slant-2pu);
cpen; lft10x1=round 2.5u; x2=x3=r-x1;
y2=good10 .5[m,h]; .5[y2,y3]=y1=good10 a;
w10 draw 2..1..1..3.	% diagonals
"Equal sign";
call charbegin('075,18,0,0,pa+.5(px-pe)+prt/2,0,(pa+.5(px-pe)).slant-.5pu);
cpen; lft10x1=round u; x3=x1; x2=x4=r-x1;
y1=y2; y3=y4; y1-y3=round(m-e); .5[y1,y3]=a;
w10 draw 1..2;	% upper bar
draw 3..4.	% lower bar
"Greater than sign";
call charbegin('076,18,0,0,.5[px,ph]+prt/2,
				.5[px,ph]+prt/2-2pa,pa.slant-2pu);
cpen; lft10x2=round 2.5u; x2=x3=r-x1;
y2=good10 .5[m,h]; .5[y2,y3]=y1=good10 a;
w10 draw 2..1..1..3.	% diagonals
"Left bracket";
call charbegin('133,5,0,0,ph+pb,ph+pb-2pa,
				(ph+pb).slant+prt/2-.25pu);
cpen; x1=x2=good10 .5r; x3=x4=x1+1.75u+eps;
top10y1=h+b; .5[y1,y2]=a; y3=y1; y4=y2;
w10 draw 3..1..1..2..2..4.	% stem and points
"Right bracket";
call charbegin('135,5,0,0,ph+pb,ph+pb-2pa,
				(ph+pb).slant+prt/2-2pu);
cpen; x1=x2=good10 .5r; x3=x4=x1-1.75u-eps;
top10y1=h+b; .5[y1,y2]=a; y3=y1; y4=y2;
w10 draw 3..1..1..2..2..4.	% stem and points
"Reverse apostrophe";
call charbegin('140,5,0,0,ph,0,ph.slant+.5pw-1.5pu);
% There is rotational symmetry with respect to apostrophe.
new v; v=fixwidth[u,5/9u];	% unit width adjusted to agree with opening quotes
cpen; bot3y1=bot6y2; top6y4=h; y3=2/3[y4,y2]; y2-y4=m-h;
x1=x2=good3 .5r; x3=good0(x1-v-eps); x4=x1+.5v+eps;
w3 draw 1;	% bulb
hpen; w0 draw 2{-1,0}..3{0,1}..4{3(x4-x3),y4-y3}.	% tail